WebSocket কি এবং Spring Boot এ এর ব্যবহার

Java Technologies - স্প্রিং বুট ক্লায়েন্ট (Spring Boot Client) Spring Boot এবং WebSocket Client Integration |
78
78

WebSocket হলো একটি প্রোটোকল যা দুইটি সিস্টেম (যেমন ক্লায়েন্ট এবং সার্ভার) এর মধ্যে স্থায়ী, ডুয়াল-ডিরেকশনাল এবং কমিউনিকেশন লিঙ্ক তৈরি করতে ব্যবহৃত হয়। এটি HTTP প্রোটোকল থেকে আলাদা, যেখানে একবার একটি কানেকশন তৈরি হলে, ক্লায়েন্ট এবং সার্ভার উভয়ই একে অপরকে বার্তা পাঠাতে পারে, এবং এটি একটি ওপেন কানেকশন ব্যবহারের মাধ্যমে কমিউনিকেশন করতে সক্ষম।

WebSocket-এর বৈশিষ্ট্য:

  1. ডুয়াল-ডিরেকশনাল যোগাযোগ: ক্লায়েন্ট এবং সার্ভার উভয় পক্ষই একে অপরকে বার্তা পাঠাতে পারে, যা HTTP প্রোটোকলের তুলনায় বেশি ইন্টারঅ্যাকটিভ।
  2. কম লেটেন্সি: একবার কানেকশন স্থাপন হলে, বার্তা প্রেরণ এবং গ্রহণ দ্রুত হয়।
  3. স্টেটফুল কানেকশন: একটি WebSocket কানেকশন স্থায়ী থাকে যতক্ষণ না এটি বন্ধ করা হয়।
  4. পাশাপাশি একাধিক ক্লায়েন্টের সাথে যোগাযোগ: এটি সহজেই মুলতুবি থাকতে পারে এবং একাধিক ক্লায়েন্টের সঙ্গে যোগাযোগ করতে পারে।

Spring Boot-এ WebSocket ব্যবহার

Spring Boot ব্যবহার করে WebSocket এর সুবিধা নেওয়া যায় অনেক সহজে। Spring WebSocket API দিয়ে আমরা একটি ওয়েবসাইটে রিয়েলটাইম যোগাযোগ সিস্টেম তৈরি করতে পারি, যেমন চ্যাট অ্যাপ্লিকেশন বা লাইভ নোটিফিকেশন সিস্টেম।

Spring Boot-এ WebSocket ব্যবহারের জন্য সাধারণত দুটি প্রধান ধাপ রয়েছে:

  1. WebSocket সাপোর্ট সক্ষম করা
  2. WebSocket সার্ভার এবং ক্লায়েন্ট তৈরি করা

1. WebSocket সাপোর্ট সক্ষম করা (Spring Boot Configuration)

প্রথমে Spring Boot অ্যাপ্লিকেশনটির pom.xml-এ প্রয়োজনীয় ডিপেনডেন্সি যোগ করতে হবে।

Maven:

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-websocket</artifactId>
</dependency>

Gradle:

implementation 'org.springframework.boot:spring-boot-starter-websocket'

2. WebSocket Configuration

Spring Boot অ্যাপ্লিকেশন কনফিগার করার জন্য একটি কনফিগারেশন ক্লাস তৈরি করতে হবে, যেখানে WebSocket এন্ডপয়েন্ট সেট করা হবে।

import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.web.socket.config.annotation.EnableWebSocket;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketConfigurer;

@Configuration
@EnableWebSocket
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {

    @Override
    public void registerStompEndpoints(StompEndpointRegistry registry) {
        registry.addEndpoint("/ws").withSockJS();  // WebSocket endpoint
    }

    @Override
    public void configureMessageBroker(MessageBrokerRegistry registry) {
        registry.enableSimpleBroker("/topic");  // Enable message broker for /topic endpoint
        registry.setApplicationDestinationPrefixes("/app");  // Prefix for app messages
    }
}

ব্যাখ্যা:

  • @EnableWebSocket: Spring WebSocket সাপোর্ট সক্ষম করে।
  • registerStompEndpoints: WebSocket এন্ডপয়েন্ট /ws দিয়ে স্টার্ট হবে, যেখানে withSockJS() ব্যবহার করা হয়েছে ফলব্যাক সাপোর্টের জন্য।
  • configureMessageBroker: /topic নামে একটি সিম্পল মেসেজ ব্রোকার সেট করা হয়েছে এবং /app নামের অ্যাপ্লিকেশন ডেস্টিনেশন পাথটি নির্ধারণ করা হয়েছে।

3. WebSocket Controller

Spring WebSocket Controller ব্যবহার করে মেসেজ প্রেরণ এবং গ্রহণ করা হয়। এই কন্ট্রোলারটি সার্ভারের মাধ্যমে ক্লায়েন্টের সাথে রিয়েলটাইম কমিউনিকেশন নিশ্চিত করবে।

import org.springframework.messaging.handler.annotation.MessageMapping;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Controller;

@Controller
public class WebSocketController {

    private final SimpMessagingTemplate messagingTemplate;

    public WebSocketController(SimpMessagingTemplate messagingTemplate) {
        this.messagingTemplate = messagingTemplate;
    }

    // Listen for messages sent to /app/chat
    @MessageMapping("/chat")
    public void sendMessage(String message) {
        messagingTemplate.convertAndSend("/topic/messages", message);  // Send message to /topic/messages
    }
}

ব্যাখ্যা:

  • @MessageMapping("/chat"): /app/chat এ পাঠানো বার্তাগুলি গ্রহণ করবে।
  • SimpMessagingTemplate: মেসেজগুলোকে /topic/messages পাথের মাধ্যমে ক্লায়েন্টদের পাঠাবে।

4. WebSocket Client (HTML + JavaScript)

ক্লায়েন্ট সাইডে, WebSocket কানেকশন এবং মেসেজ পাঠানোর জন্য JavaScript ব্যবহার করতে হবে।

<!DOCTYPE html>
<html>
<head>
    <title>WebSocket Chat</title>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/sockjs-client/1.5.1/sockjs.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/stomp.js/2.3.3/stomp.min.js"></script>
</head>
<body>
    <h1>WebSocket Chat</h1>
    <div id="chat"></div>
    <input type="text" id="message" placeholder="Type a message" />
    <button onclick="sendMessage()">Send</button>

    <script>
        const socket = new SockJS('/ws');
        const stompClient = Stomp.over(socket);

        stompClient.connect({}, function(frame) {
            console.log('Connected: ' + frame);
            stompClient.subscribe('/topic/messages', function(response) {
                document.getElementById("chat").innerHTML += "<p>" + response.body + "</p>";
            });
        });

        function sendMessage() {
            const message = document.getElementById("message").value;
            stompClient.send("/app/chat", {}, message);
            document.getElementById("message").value = '';
        }
    </script>
</body>
</html>

ব্যাখ্যা:

  • SockJS এবং STOMP.js: ক্লায়েন্ট সাইডে WebSocket কানেকশন স্থাপন এবং মেসেজ পাঠানোর জন্য ব্যবহৃত হয়।
  • stompClient.subscribe("/topic/messages", ...): ক্লায়েন্টটি /topic/messages থেকে মেসেজ গ্রহণ করে এবং পৃষ্ঠাতে দেখায়।
  • stompClient.send("/app/chat", ...): ক্লায়েন্ট মেসেজ পাঠানোর জন্য /app/chat এন্ডপয়েন্টে একটি মেসেজ পাঠায়।

5. Spring Boot অ্যাপ্লিকেশন রান করা

এখন Spring Boot অ্যাপ্লিকেশনটি রান করলে /ws WebSocket এন্ডপয়েন্টটি সক্রিয় হবে। ক্লায়েন্ট ব্রাউজারে HTML ফাইলটি খুললে, আপনি real-time chat করতে পারবেন।


উপসংহার

WebSocket একটি শক্তিশালী প্রযুক্তি, যা রিয়েল-টাইম ডেটা ট্রান্সফারের জন্য আদর্শ। Spring Boot WebSocket ইন্টিগ্রেশন খুবই সহজ এবং প্রভাবশালী, এবং এটি দ্রুত রিয়েল-টাইম অ্যাপ্লিকেশন যেমন চ্যাট অ্যাপ, নোটিফিকেশন সিস্টেম, বা লাইভ ডেটা ফিড তৈরি করতে সাহায্য করে। Spring Boot-এ WebSocket সেটআপ করা সহজ এবং এটি মেসেজ ব্রোকার এবং STOMP প্রোটোকল ব্যবহার করে কার্যকরভাবে রিয়েল-টাইম কমিউনিকেশন সমর্থন করে।

Content added By
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion